home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / docs / ippon / ver / 050 / psearch.c < prev    next >
C/C++ Source or Header  |  1999-06-14  |  1KB  |  85 lines

  1. #include "player.h"
  2. #include "psearch.h"
  3.  
  4.  
  5.  
  6. /* 自機サーチ:敵キャラの座標から見た自機の方向を返す */
  7. unsigned char psearch (signed short ex, signed short ey)
  8. {
  9.     signed short dx, dy;
  10.  
  11.     /* 安全のため dx,dy 共に -255~255 の範囲に納める */
  12.     /* (そのため座標の差が 256 以上だと誤差が出るが実用上問題ない) */
  13.     dx = player->x - ex;
  14.     if (dx > 255) {
  15.         dx = 255;
  16.     } else {
  17.         if (dx < -255) {
  18.             dx = -255;
  19.         }
  20.     }
  21.     dy = player->y - ey;
  22.     if (dy > 255) {
  23.         dy = 255;
  24.     } else {
  25.         if (dy < -255) {
  26.             dy = -255;
  27.         }
  28.     }
  29.  
  30.     if (dx > 0) {
  31.         if (dy > 0) {
  32.             return (pstable[dx][dy]);
  33.         } else {
  34.             return (256 - pstable[dx][-dy]);
  35.         }
  36.     } else {
  37.         if (dy > 0) {
  38.             return (128 - pstable[-dx][dy]);
  39.         } else {
  40.             return (128 + pstable[-dx][-dy]);
  41.         }
  42.     }
  43. }
  44.  
  45.  
  46.  
  47. /* 任意サーチ:敵キャラの座標から見た任意の方向を返す */
  48. unsigned char msearch (signed short ex, signed short ey, signed short mx, signed short my)
  49. {
  50.     signed short dx, dy;
  51.  
  52.     /* 安全のため dx,dy 共に -255~255 の範囲に納める */
  53.     /* (そのため座標の差が 256 以上だと誤差が出るが実用上問題ない) */
  54.     dx = mx - ex;
  55.     if (dx > 255) {
  56.         dx = 255;
  57.     } else {
  58.         if (dx < -255) {
  59.             dx = -255;
  60.         }
  61.     }
  62.     dy = my - ey;
  63.     if (dy > 255) {
  64.         dy = 255;
  65.     } else {
  66.         if (dy < -255) {
  67.             dy = -255;
  68.         }
  69.     }
  70.  
  71.     if (dx > 0) {
  72.         if (dy > 0) {
  73.             return (pstable[dx][dy]);
  74.         } else {
  75.             return (256 - pstable[dx][-dy]);
  76.         }
  77.     } else {
  78.         if (dy > 0) {
  79.             return (128 - pstable[-dx][dy]);
  80.         } else {
  81.             return (128 + pstable[-dx][-dy]);
  82.         }
  83.     }
  84. }
  85.